# 定义测试项目
project(CV_CAL_TESTS)

# 查找 Google Test
find_package(GTest REQUIRED)
find_package(Threads REQUIRED)  # 查找线程库
# 查找 OpenCV（如果测试代码需要 OpenCV）
find_package(OpenCV REQUIRED)

#查找 pkg-config
find_package(PkgConfig REQUIRED)

# 使用 pkg-config 查找 ZBar
pkg_check_modules(ZBAR REQUIRED IMPORTED_TARGET zbar)
# 使用 pkg-config 查找 ZXing
pkg_check_modules(ZXING REQUIRED IMPORTED_TARGET zxing)

# 定义测试源文件
set(TEST_SOURCES
    main_test.cpp          # 测试主程序入口
    test_default_processor.cpp     # 针对 DefaultProcessor 的测试
    ../src/processor/CardProcessor.cpp  # 主项目的源文件
    ../src/processor/CardPickProcessor.cpp  # 主项目的源文件
    ../src/processor/CardParamPickProcessor.cpp  # 主项目的源文件
    ../src/processor/QRDetector.cpp
    ../src/processor/QRPickDetector.cpp)

# 创建测试可执行文件
add_executable(run_tests ${TEST_SOURCES})

# 添加头文件路径
target_include_directories(run_tests PRIVATE
    ../include  # 主项目的头文件路径
    ${GTEST_INCLUDE_DIRS}        # GTest 的头文件路径
)

# 链接库
target_link_libraries(run_tests PRIVATE
    GTest::GTest       # GTest 库
    GTest::Main        # GTest 主库
    Threads::Threads   # 线程库
    ${OpenCV_LIBS}     # OpenCV 库
    PkgConfig::ZBAR    # ZBar 库
    PkgConfig::ZXING    # ZXING 库
    )

# 启用测试功能
enable_testing()

# 添加测试命令
add_test(NAME run_all_tests COMMAND run_tests)
